package com.nebula.salary.portal.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nebula.salary.model.dto.UserQueryDto;
import com.nebula.salary.model.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 用户表 Mapper 接口
 * </p>
 *
 * @author codex
 * @since 2022-01-24
 */
public interface UserMapper extends BaseMapper<User> {
    
    /**
     * 根据用户名查询用户信息，包括角色信息
     *
     * @param username 用户名
     * @return 用户信息，包括角色信息
     */
    User selectUserByUsername(@Param("username") String username);
    
    /**
     * 获取有权管理的用户列表
     *
     * @param page      分页参数
     * @param dto       用户管理查询数据传输类
     * @param roleLevel 角色权限等级
     * @return 用户列表
     */
    IPage<User> selectUserList(Page<User> page, @Param("dto") UserQueryDto dto, @Param("roleLevel") Integer roleLevel);
    
    /**
     * 分页查询所有用户
     *
     * @param page 分页参数
     * @param dto  用户管理查询数据传输类
     * @return 用户列表
     */
    IPage<User> selectAll(Page<User> page, @Param("dto") UserQueryDto dto);

    /**
     * 根据用户名修改用户密码
     * 
     * @param username 用户名
     * @param password 用户密码
     * @return 影响行数
     */
	int updatePasswordByUsername(@Param("username") String username, @Param("password") String password);
}
